package com.cbd.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cbd.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * cbd-management:
 * {@code @Description} 用户Mapper接口
 * {@code @Author}  Flowen~
 * {@code @Date&Time} 2024/11/25 11:32
 */
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
    /**
     * 根据用户名获取用户信息
     * @param username 用户名
     * @return 用户信息
     */
    UserEntity getUserByUsername(String username);
    /**
     * 新增用户
     * @param user 用户实体
     * @return 是否成功
     */
    boolean insertUser(UserEntity user);
    /**
     * 根据用户名更新用户信息
     * @param user 用户实体
     * @return 是否成功
     */
    int checkUserStatus(String username);
    /**
     * 根据用户名更新用户状态
     * @param username 用户名
     * @return 是否成功
     */
    boolean updateUserStatus(String username);
    /**
     * 根据用户名获取角色和权限
     * @param username 用户名
     * @return 角色和权限列表
     */
    @Select("select role_name from t_user,t_user_role,t_role\n" +
            "where t_user.user_id = t_user_role.user_id and\n" +
            "t_user_role.role_id = t_role.role_id\n" +
            "and t_user.username = #{username}")
    @ResultType(List.class)
    List<String> getRoles(String username);

    /**
     * 根据用户名获取权限
     * @param username
     * @return
     */
    @Select("select permission_name from t_user,t_user_role,t_role_permission,t_permission\n" +
            "where t_user.user_id = t_user_role.user_id and\n" +
            "t_user_role.role_id = t_role_permission.role_id and\n" +
            "t_role_permission.permission_id = t_permission.permission_id and t_user.username = #{username}")
    @ResultType(List.class)
    List<String> getPermissions(String username);

}
